home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / os20 / wb / toolmanager2_0.lha / ToolManager / Programmers / oberon / ToolManager.mod
Text File  |  1992-09-26  |  6KB  |  152 lines

  1. (*-------------------------------------------------------------------------*)
  2. (*                                                                         *)
  3. (*  Amiga Oberon Library Module: ToolManager          Date: 23-Sep-92      *)
  4. (*                                                                         *)
  5. (*   © 1992 by Martin Horneffer                                            *)
  6. (*                                                                         *)
  7. (*  This  Module  may  freely  be copied and distributed, as long as it is *)
  8. (*  left unchanged and kept together with "toolmanager.library",           *)
  9. (*  © 1990-1992 Stefan Becker.                                             *)
  10. (*                                                                         *)
  11. (*-------------------------------------------------------------------------*)
  12.  
  13. MODULE ToolManager;
  14.  
  15. IMPORT u:Utility, Intuition, Exec;
  16.  
  17. CONST
  18.   Name          * = "toolmanager.library";
  19.   Version       * = 2;
  20.  
  21. CONST
  22.  
  23.   (* ToolManager Object Types *)
  24.  
  25.   typeExec *    = 0;
  26.   typeImage *   = 1;
  27.   typeSound *   = 2;
  28.   typeMenu *    = 3;
  29.   typeIcon *    = 4;
  30.   typeDock *    = 5;
  31.   types *       = 6;
  32.  
  33.   (* ToolManager Object Properties (see Object.doc) *)
  34.  
  35.   (* Type: typeExec *)
  36.   arguments *   = u.user +  1;
  37.   command *     = u.user +  2; (* also used for typeSound *)
  38.   currentDir *  = u.user +  3;
  39.   delay *       = u.user +  4;
  40.   execType *    = u.user +  5;
  41.   hotKey *      = u.user +  6; (* also used for typeDock *)
  42.   output *      = u.user +  7;
  43.   path *        = u.user +  8;
  44.   priority *    = u.user +  9;
  45.   pubScreen *   = u.user + 10; (* also used for typeDock *)
  46.   stack *       = u.user + 11;
  47.   toFront *     = u.user + 12;
  48.  
  49.   (* Type: tyepImage *)
  50.   file *        = u.user +  257;
  51.   data *        = u.user +  258;
  52.  
  53.   (* Type: typeSound *)
  54.   port *        = u.user +  513;
  55.  
  56.   (* Type: typeMenu, typeIcon *)
  57.   exec *        = u.user +  769;
  58.   sound *       = u.user +  770;
  59.  
  60.   (* Type: typeIcon *)
  61.   image *       = u.user + 1025;
  62.   showName *    = u.user + 1026;
  63.  
  64.   (* Type: typeIcon, typeDock *)
  65.   leftEdge *    = u.user + 1281;
  66.   topEdge *     = u.user + 1282;
  67.  
  68.   (* Type: typeDock *)
  69.   activated *   = u.user + 1536;
  70.   centered *    = u.user + 1537;
  71.   columns *     = u.user + 1538;
  72.   font *        = u.user + 1539;
  73.   frontMost *   = u.user + 1540;
  74.   menu *        = u.user + 1541;
  75.   pattern *     = u.user + 1542;
  76.   popup *       = u.user + 1543;
  77.   text *        = u.user + 1544;
  78.   title *       = u.user + 1545;
  79.   tool *        = u.user + 1546;
  80.   vertical *    = u.user + 1547;
  81.  
  82.   (* Types for execType *)
  83.   cli *         = 0;
  84.   wb *          = 1;
  85.   arexx *       = 2;
  86.   hook *        = 3;
  87.   execTypes *   = 4;
  88.  
  89. TYPE
  90.  
  91. (* Data structures for storing image sequences (TMOBJTYPE_IMAGE/TMOP_Data) *)
  92. (* TMImageNode contains the data for ONE picture. Several nodes are joined *)
  93. (* into a single-linked chain via tmin_Next.                               *)
  94.  
  95.   ImageNodePtr * = UNTRACED POINTER TO ImageNode;
  96.   ImageNode * = STRUCT
  97.                   next * : ImageNodePtr; (* pointer to next node *)
  98.                   data * : Exec.APTR;    (* MEMF_CHIP memory!!   *)
  99.                 END;
  100.  
  101. (* TMImageData contains information about the image data, like sizes etc.   *)
  102. (* You MUST initialize BOTH Image structures and they MUST BE identical     *)
  103. (* except of the ImageData pointer. tmid_Normal.ImageData should point to   *)
  104. (* an image data which shows the inactive state and tmid_Selected.ImageData *)
  105. (* should point to an image which shows the active state.                   *)
  106.  
  107.   ImageDataPtr * = UNTRACED POINTER TO ImageData;
  108.   ImageData * = STRUCT
  109.                   normal *   : Intuition.Image; (* inactive state  *)
  110.                   selected * : Intuition.Image; (* active state    *)
  111.                   data *     : ImageNodePtr;    (* chain of images *)
  112.                 END;
  113.  
  114. VAR
  115.   base          * : Exec.LibraryPtr;
  116.  
  117.  
  118. PROCEDURE QuitToolManager*{base,-36} ();
  119.  
  120. PROCEDURE AllocTMHandle*{base,-42} (): LONGINT;
  121.  
  122. PROCEDURE FreeTMHandle*{base,-48} (             handle{8}: LONGINT);
  123.  
  124. PROCEDURE CreateTMObjectTagList*{base,-54} (    handle{8}: LONGINT;
  125.                                                 name{9}  : ARRAY OF CHAR;
  126.                                                 type{0}  : LONGINT;
  127.                                                 tags{10}  : ARRAY OF u.TagItem): BOOLEAN;
  128. PROCEDURE CreateTMObjectTags*{base,-54} (       handle{8}: LONGINT;
  129.                                                 name{9}  : ARRAY OF CHAR;
  130.                                                 type{0}  : LONGINT;
  131.                                                 tags{10}..: u.Tag): BOOLEAN;
  132.  
  133. PROCEDURE DeleteTMObject*{base,-60} (           handle{8}: LONGINT;
  134.                                                 object{9}: ARRAY OF CHAR): BOOLEAN;
  135.  
  136. PROCEDURE ChangeTMObjectTagList*{base,-66} (    handle{8}: LONGINT;
  137.                                                 object{9}: ARRAY OF CHAR;
  138.                                                 tags{10} : ARRAY OF u.TagItem ): BOOLEAN;
  139. PROCEDURE ChangeTMObjectTags*{base,-66} (       handle{8}: LONGINT;
  140.                                                 object{9}: ARRAY OF CHAR;
  141.                                                 tags{10}..: u.Tag ): BOOLEAN;
  142.  
  143. BEGIN
  144.   base := Exec.OpenLibrary( Name, Version);
  145.   IF base=NIL THEN
  146.     IF Intuition.DisplayAlert(0,"\x00\x64\x14missing toolmanager.library!\o\o",50) THEN END;
  147.     HALT(20)
  148.   END;
  149. CLOSE
  150.   IF base # NIL THEN Exec.CloseLibrary(base) END;
  151. END ToolManager.
  152.